The present invention is directed to a communication system having a switching network, connector modules, a multiprocessor system and patch procedures for the correction of software errors.
Complex communication systems are usually realized as multiprocessor systems. Compared to single processor systems, the multiprocessor systems have advantages such as, for example, a significant increase in the processing speed. This is achieved by parallel handling of a plurality of tasks, each of which respectively represent sub-tasks of a task to be handled. Every processor handles a sub-task and the sub-results are compiled to form an overall result.
In addition to high processing speed, another requirement of modern communication systems is to assure the availability of the system for all subscribers at any time, this being achieved by a far-reaching redundancy of central parts of the system. Thus, international standardization committees for communication systems/communication networks, for example, CCITT, require a high availability of the system over the entire service life, for example in the form that a communication system cannot be down for more than two hours over a period of twenty years. In order to satisfy these requirements, the internal operational sequences of the system must be controlled and monitored by a plurality of processes and procedures. The complexity of the procedures and processes sequencing in a communication system, however, is thus greatly increased. What is generally valid is that the error probability becomes greater as the system becomes more complex and multi-layered.
Errors occurring during operation must therefore be analyzed and correction data must be immediately introduced into the system in order to reduce the error probability of the system and, thus, to enhance the availability of the system. In general, errors are unavoidable when creating procedures. Syntax errors can in fact be eliminated during the course of creation by specific procedures such as, for example, compiler procedures. However, logical coding errors cannot be identified via such a syntax check. They thus take affect during the ongoing operation and particularly occur where a complex interaction of procedures and processes takes place. The complexity of such a system, makes the appearance of a logical coding error possible only after a long operating time and thus makes an immediate elimination of such an error more difficult.
Although single processor systems of a traditional type allow corrected and, thus, re-coded procedure sequences to be edited, compiled, and linked again, as well as, re-introduced into the system with low outlay for time and work, such a procedure is no longer practical for present multiprocessor communication systems. The introduction of even minute corrections would require a renewed editing, compiling, as well as linking of all procedures of the overall communication system. Such a process, however, would generally take several days and would thus block computer centers for other jobs for a long period of time.
The necessity of developing methods that allow a fast, short-term introduction of less significant error corrections into the software of a communication system lead to the development of procedures for rapid correction of logical coding errors, referred to below as patches. Small software corrections can be implemented in the short-term with patches. On the basis of instructions via a user terminal, the modifications are directly supplied to the code executions to be corrected in the respective procedures. For simple logical coding errors the faulty code is overwritten. When, however, additional code must be inserted into the program execution, the introduced patch is connected to what is referred to as a "backpack". This contains additional program code that is necessary for eliminating the logical error and is deposited in a main memory area specifically provided for this purpose. The correction of the program code that has now been modified is effected during the later operational sequence in that the procedure branches to the introduced "backpack" at the corresponding modification location, after which a return occurs to the original program code. This event is controlled by what is referred to as a patch administration. The addresses of the "backpacks" allocated to the patches are stored in tabular form.
The creation of the procedures of a communication system implies a number of complex development steps since, first, the procedure is still affected with errors immediately after the coding process that can only be eliminated after further development steps and, second, further performance features are added, this usually denoting a linking of further procedures into the software of the communication system.
For organizational reasons, a version number is assigned to every development step. However, by means of a patch, only temporary error corrections that do not establish new versions are introduced into the system. When, during the course of using new performance features, new procedure components are produced and linked into the system to which corresponding, new version numbers are then assigned, these new procedure components are occasionally used to completely work the temporarily introduced patches into the procedures. The "former" patches are thus no longer carried along in the procedures provided with a new version number.
Simple logical coding errors can be corrected in the short-term with this method for fast error correction (patch method) and can be introduced into the procedures of the communication system. What are to be understood by simple logical coding errors are, for example, those errors that appear in a module to be handled by a single processor. However, due to the development toward multiprocessor systems, there are constellations that do not occur in a single processor architecture. Logical coding errors are thereby so complex and multilayered due to the interaction of a number of procedures and processes that an immediate correction of faulty code in the respective procedures is no longer possible without further steps. In addition to the errors known from the previous "single processor world", new types of errors have been introduced that occur cross-module, occur cross-processor, only occur when a specific network environment is present, or only occur in combination with corresponding firmware.
Such complex logical coding errors, however, can no longer be corrected and introduced into the system with the above-described patch method since the error corrections, (for example, in the case of cross-module logical coding errors) must be introduced in a modification step.
As already mentioned, the complexity of a system is directly correlated to its error probability and also to its availability. In practice, this means that the more patches (i.e. fast error corrections) that are situated in the modules, procedures and tables, the more complex the system. During the further course of the development process of the procedures of a communication system, additional procedures access these patches, in this case, thus, up to the assignment of the next version number.
Permanent physical addresses are allocated to the patches in the working memory. When additional data are to be inserted into the tables of the communication system during the course of a development process (particularly when additional subscribers are connected to the communication system), then this inherently involves a relocation of these physical addresses. This, however, is avoided in that the patches coming into consideration are analyzed and temporarily removed in a succession of laborious individual steps in order to introduce the corresponding data. In particular, the removal of patches that have already been introduced presents enormous problems in practice since errors formerly handled may now crop up again under certain circumstances. Since, as mentioned, additional procedures access introduced patches during the further course of the development process of the communication system, there is a probability of a total collapse or of a drastic limitation of the availability of the overall communication system that must be considered.